In traditional server-client relationships, workload is spread between the client and server. “Thin clients” tend to perform very little computational work, leaving the majority of the computational tasks to the server, while “thick clients” tend to perform a great deal of computational work, in comparison to the server. There are, of course, many different implementations across the entire spectrum of thin and thick clients.
No matter the implementation, however, the distribution of which operations or tasks are performed on the client side and which operations or tasks are performed on the server side is determined at the software's design time. A programmer or other program creator makes a decision as to whether or not a particular operation will be performed on the client side or on the server side when creating the server-side and/or client-side applications, which are often written in completely different programming languages.